#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//代码中写入了 4 个字节数据，都是 0x55，之后,使用 lseek 函数将位置偏移量移动到距离文件末尾 4 个字节处
//读取 4 个字节（也就是读取文件最后 4 个字节数据）

int main(void)
{
	char buffer[16];
	int fd;
	int ret;
	/* 打开文件 */
	fd = open("./test_file", O_RDWR | O_APPEND);
	if (-1 == fd)
	{
		perror("open error");
		exit(-1);
	}
	/* 初始化 buffer 中的数据 */
	memset(buffer, 0x55, sizeof(buffer));
	/* 写入数据: 写入 4 个字节数据 */
	ret = write(fd, buffer, 4);
	if (-1 == ret)
	{
		perror("write error");
		goto err;
	}
	/* 将 buffer 缓冲区中的数据全部清 0 */
	memset(buffer, 0x00, sizeof(buffer));
	/* 将位置偏移量移动到距离文件末尾 4 个字节处 */
	ret = lseek(fd, -4, SEEK_END);
	if (-1 == ret)
	{
		perror("lseek error");
		goto err;
	}
	/* 读取数据 */
	ret = read(fd, buffer, 4);
	if (-1 == ret)
	{
		perror("read error");
		goto err;
	}
	printf("0x%x 0x%x 0x%x 0x%x\n", buffer[0], buffer[1],buffer[2], buffer[3]);
	ret = 0;
err:
	/* 关闭文件 */
	close(fd);
	exit(ret);
}